<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>Layui数据服务平台</title>
    <link rel="stylesheet" href="layui/css/layui.css">
</head>
<body>
<div class="layui-layout layui-layout-admin">
    <div class="layui-header">
        <div class="layui-logo layui-hide-xs layui-bg-black">Layui数据服务平台</div>
        <!-- 头部区域（可配合layui 已有的水平导航） -->
        <ul class="layui-nav layui-layout-left">
            <!-- 移动端显示 -->
            <li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft">
                <i class="layui-icon layui-icon-spread-left"></i>
            </li>

            <li class="layui-nav-item layui-hide-xs"><a href="">nav 1</a></li>
            <li class="layui-nav-item layui-hide-xs"><a href="">nav 2</a></li>
            <li class="layui-nav-item layui-hide-xs"><a href="">nav 3</a></li>
            <li class="layui-nav-item">
                <a href="javascript:;">nav groups</a>
                <dl class="layui-nav-child">
                    <dd><a href="">menu 11</a></dd>
                    <dd><a href="">menu 22</a></dd>
                    <dd><a href="">menu 33</a></dd>
                </dl>
            </li>
        </ul>
        <ul class="layui-nav layui-layout-right">
            <li class="layui-nav-item layui-hide layui-show-md-inline-block">
                <a href="javascript:;">
                    <img src="//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg" class="layui-nav-img">
                    tester
                </a>
                <dl class="layui-nav-child">
                    <dd><a href="">Your Profile</a></dd>
                    <dd><a href="">Settings</a></dd>
                    <dd><a href="">Sign out</a></dd>
                </dl>
            </li>
            <li class="layui-nav-item" lay-header-event="menuRight" lay-unselect>
                <a href="javascript:;">
                    <i class="layui-icon layui-icon-more-vertical"></i>
                </a>
            </li>
        </ul>
    </div>

    <div class="layui-side layui-bg-black">
        <div class="layui-side-scroll">
            <!-- 左侧导航区域（可配合layui已有的垂直导航） -->
            <ul class="layui-nav layui-nav-tree" lay-filter="test">
                <li class="layui-nav-item layui-nav-itemed">
                    <a class="" href="javascript:;">用户数据模块</a>
                    <dl class="layui-nav-child">
                        <dd class="layui-this"><a href="userList.html">用户列表</a></dd>
                        <dd><a href="bm.html">部门列表</a></dd>
                        <dd><a href="zw.html">职位列表</a></dd>
                        <dd><a href="">the links</a></dd>
                    </dl>
                </li>
                <li class="layui-nav-item">
                    <a href="javascript:;">menu group 2</a>
                    <dl class="layui-nav-child">
                        <dd><a href="javascript:;">list 1</a></dd>
                        <dd><a href="javascript:;">list 2</a></dd>
                        <dd><a href="">超链接</a></dd>
                    </dl>
                </li>
                <li class="layui-nav-item"><a href="javascript:;">click menu item</a></li>
                <li class="layui-nav-item"><a href="">the links</a></li>
            </ul>
        </div>
    </div>

    <div class="layui-body">
        <!-- 内容主体区域 -->
        <div style="padding: 15px;">
            <!-- 面包屑导航 -->
            <span class="layui-breadcrumb">
              <a href="index.html">首页</a>
              <a><cite>用户管理</cite></a>
            </span>

            <!-- 水平线 -->
            <hr class="layui-bg-blue">

            <!-- 搜索条件 -->
            <fieldset class="layui-elem-field">
                <legend>筛选条件</legend>
                <div class="layui-field-box">
                    <div class="layui-form-item layui-form-pane">
                        <label class="layui-form-label">数据匹配</label>
                        <div class="layui-input-inline">
                            <input type="text" id="jiShuFangXiang" placeholder="模糊查询名称" class="layui-input">
                        </div>

                        <label class="layui-form-label">数据匹配</label>
                        <div class="layui-input-inline">
                            <input type="text" id="jiShuFangXiang" placeholder="模糊查询名称" class="layui-input">
                        </div>

                        <label class="layui-form-label">数据匹配</label>
                        <div class="layui-input-inline">
                            <input type="text" id="jiShuFangXiang" placeholder="模糊查询名称" class="layui-input">
                        </div>
                    </div>

                    <div class="layui-form-item layui-form-pane">
                        <div class="layui-inline">
                            <button class="layui-btn layui-btn-radius layui-btn-warm" id="iReset">重置</button>
                            <button class="layui-btn layui-btn-radius layui-btn-normal" id="searchVal">搜索</button>
                        </div>
                    </div>
                </div>
            </fieldset>

            <!-- 动态数据表格 -->
            <table class="layui-hide" id="test" lay-filter="test"></table>

            <script type="text/html" id="toolbarDemo">
                <div class="layui-btn-container">
                    <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
                    <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button>
                    <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button>
                    <button class="layui-btn layui-btn-sm" lay-event="insert_data">新增数据</button>
                </div>
            </script>

            <script type="text/html" id="barDemo"> <!-- 通过script定义的html代码，默认是隐藏的，只有在js调用渲染时，才会出现 -->
            <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
            <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
            </script>

            <script type="text/html" id="insert_form">
                <div class="layui-field-box">
                    <div class="layui-form-item layui-form-pane">
                        <label class="layui-form-label">数据编号</label>
                        <div class="layui-input-inline">
                            <input type="text" id="insert_no" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item layui-form-pane">
                        <label class="layui-form-label">下拉菜单</label>
                        <div class="layui-input-inline layui-form">
                            <select name="insert_select" id="insert_select">
                                <option value="" selected="">下拉菜单</option>
                            </select>
                        </div>
                    </div>
                    <div class="layui-form-item layui-form-pane">
                        <label class="layui-form-label">创建时间</label>
                        <div class="layui-input-inline">
                            <input type="text" name="date" id="insert_time" placeholder=" - " class="layui-input">
                        </div>
                    </div>
                </div>
            </script>
            <script src="layui/layui.js" charset="utf-8"></script>
            <script type="text/html" id="update_form">
                <div class="layui-field-box">
                    <div class="layui-form-item layui-form-pane">
                        <label class="layui-form-label">数据编号</label>
                        <div class="layui-input-inline">
                            <input type="text" id="update_no" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item layui-form-pane">
                        <label class="layui-form-label">下拉菜单</label>
                        <div class="layui-input-inline layui-form">
                            <select name="insert_select" id="update_select">
                                <option value="" selected="">下拉菜单</option>
                            </select>
                        </div>
                    </div>
                    <div class="layui-form-item layui-form-pane">
                        <label class="layui-form-label">时间</label>
                        <div class="layui-input-inline">
                            <input type="text" name="date" id="update_time" placeholder=" - " class="layui-input">
                        </div>
                    </div>
                </div>
            </script>
        </div>
    </div>

    <div class="layui-footer">
        <!-- 底部固定区域 -->
        @copyright 2020-2022  www.dly2022.com  渣渣集团
    </div>
</div>
<script src="layui/layui.js"></script>
<script src="jquery/jquery-3.6.0.js"></script>
<script>
    //JS
    layui.use(['element', 'layer', 'util'], function(){
        var element = layui.element
            ,layer = layui.layer
            ,util = layui.util
            ,$ = layui.$;

        //头部事件
        util.event('lay-header-event', {
            //左侧菜单事件
            menuLeft: function(othis){
                layer.msg('展开左侧菜单的操作', {icon: 0});
            }
            ,menuRight: function(){
                layer.open({
                    type: 1
                    ,content: '<div style="padding: 15px;">处理右侧面板的操作</div>'
                    ,area: ['260px', '100%']
                    ,offset: 'rt' //右上角
                    ,anim: 5
                    ,shadeClose: true
                });
            }
        });

    });

    layui.use('table', function(){
        var table = layui.table;

        // 绝对路径 必须严格按照定义时编写的路径名称一致  并且区分大小写
        // 接口服务几乎都是定义的绝对路径
        // 前端页面几乎都是定义的相对路径
        /*
           相对路径，首先拼接当前页面的前缀地址，再拼接相对路径地址，就是需要跳转的跳转
           例如：

                 a页面在  http://localhost:8080/a.html    在此页面定义了一个相对路径为  script src="layui/layui.js"
                 那么 这个js文件的真实地址就是  http://localhost:8080/layui/layui.js

                 a页面在  http://localhost:8080/x/a.html    在此页面定义了一个相对路径为 script src="layui/layui.js"
                 那么 这个js文件的真实地址就是  http://localhost:8080/x/layui/layui.js

                 a页面在  http://localhost:8080/x/a.html    在此页面定义了一个相对路径为  script src="./layui/layui.js"
                 那么 这个js文件的真实地址就是  http://localhost:8080/x/layui/layui.js

                 a页面在  http://localhost:8080/x/a.html    在此页面定义了一个相对路径为  script src="../layui/layui.js"
                 那么 这个js文件的真实地址就是  http://localhost:8080/layui/layui.js

                 a页面在  http://localhost:8080/x/y/a.html    在此页面定义了一个相对路径为  script src="../../layui/layui.js"
                 那么 这个js文件的真实地址就是  http://localhost:8080/layui/layui.js

                 在企业规范中，尽可能相对路径不要超过三层，这样可以提升可读性

                 a页面在  http://localhost:8080/x/y/a.html    在此页面定义了一个相对路径为  script src="../../../layui/layui.js"
                 那么 这个js文件的真实地址就是  http://layui/layui.js   这样的地址是会出错的

                 在前端页面中，绝对路径，都是从webapp开始计算
                 /index.html
                 /layui/layui.js

                 把webapp想象成 http://localhost:8080
         */
        table.render({
            elem: '#test'
            ,url:'/testJSON'         // 相对路径与绝对路径
            ,toolbar: '#toolbarDemo' //开启头部工具栏，并为其绑定左侧模板
            ,defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义，去除该参数即可
                title: '提示'
                ,layEvent: 'LAYTABLE_TIPS'
                ,icon: 'layui-icon-tips'
            }]
            ,title: '用户数据表'
            ,cols: [[
                {type: 'checkbox', fixed: 'left'}
                ,{title:'ID', width:80, templet: function(data){
                        return '<em>'+ data.id +'</em>'
                    }}
                ,{title:'用户名', width:120, templet: function(data){
                        return '<em>'+ data.username +'</em>'
                    }}
                ,{title:'邮箱', width:150, edit: 'text', templet: function(data){
                        return '<em>'+ data.email +'</em>'
                    }}
                ,{field:'sex', title:'性别', width:80, edit: 'text', sort: true}
                ,{field:'city', title:'城市', width:100}
                ,{field:'sign', title:'签名'}
                ,{field:'experience', title:'积分', width:80, sort: true}
                ,{field:'ip', title:'IP', width:120}
                ,{field:'logins', title:'登入次数', width:100, sort: true}
                ,{field:'joinTime', title:'加入时间', width:120}
                ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
            ]]
            ,page: true
        });

        //头工具栏事件
        table.on('toolbar(test)', function(obj){
            var checkStatus = table.checkStatus(obj.config.id);
            switch(obj.event){
                case 'getCheckData':
                    var data = checkStatus.data;
                    //JSON.stringify(data);    // 它的作用是把一个对象(JSONObject   JSONArray)转成字符串形态
                    // JSON.parse("String");    // 把一个字符串转换成一个对象(JSONObject   JSONArray)?
                    // 上述的两个方法，是隶属于JS原生的，不是LayUI，这两个方法如果转换的对象不是json类型的，那么会抛出错误
                    // layer.alert(JSON.stringify(data));
                    console.log(data);         // 此方法是把一个js中的对象或者字符串展示到页面的控制台中
                    break;
                case 'getCheckLength':
                    var data = checkStatus.data;
                    layer.msg('选中了：'+ data.length + ' 个');
                    break;
                case 'isAll':
                    layer.msg(checkStatus.isAll ? '全选': '未全选');
                    break;
                case 'insert_data':
                    //弹出表单
                    layer.open({
                        type: 1
                        ,title: '新增数据' //不显示标题栏
                        ,closeBtn: false
                        ,area: ['500px','500px']  // 宽和高
                        ,shade: 0.8
                        ,id: 'LAY_layuipro' //设定一个id，防止重复弹出
                        ,btn: ['新增', '取消']
                        ,btnAlign: 'c'
                        ,moveType: 1 //拖拽模式，0或者1
                        ,content: $('#insert_form').html()         // 引入自定义表单
                        ,btn1: function(index, layero){            // 这个是新增按钮点击事件
                            layer.msg("新增按钮");
                            // let insert_no = $("#insert_no").val();
                            // if(insert_no) {
                            //     // 自定义ajax请求
                            //     // working
                            //     // 关闭弹出框
                            //     layer.close(index);
                            // }
                            // else {
                            //     alert("请填写必要项!");
                            // }
                        }
                        ,success: function(layero){
                            // 初始化弹出表单
                            // for(i = 0; i < data.length; i++) {
                            //     var only= data[i];
                            $("#insert_select").append("<option value='1'>下拉数据01</option>");
                            $("#insert_select").append("<option value='2'>下拉数据01</option>");
                            // }
                            // 初始化过程中，触发这里的函数代码
                            // 初始化form表单样式，并刷新select渲染
                            layui.use(['form'], function(){
                                layui.form.render('select');
                            });
                            // 初始化日期控件
                            layui.use('laydate', function(){
                                var laydate = layui.laydate;
                                //日期  搜索的开始时间
                                laydate.render({
                                    elem: '#insert_time',
                                });
                            });
                        }
                    });
                    break;

                //自定义头工具栏右侧图标 - 提示
                case 'LAYTABLE_TIPS':+
                    layer.alert('这是工具栏右侧自定义的一个图标按钮');
                    break;
            };
        });

        //监听行工具事件
        table.on('tool(test)', function(obj){
            var data = obj.data;
            //console.log(obj)
            if(obj.event === 'del'){
                layer.confirm('真的删除行么', function(index){
                    obj.del();
                    layer.close(index);
                });
            } else if(obj.event === 'edit'){
                //弹出表单
                layer.open({
                    type: 1
                    ,title: '编辑数据' //不显示标题栏
                    ,closeBtn: false
                    ,area: ['500px','500px']  // 宽和高
                    ,shade: 0.8
                    ,id: 'LAY_layuipro' //设定一个id，防止重复弹出
                    ,btn: ['更新', '取消']
                    ,btnAlign: 'c'
                    ,moveType: 1 //拖拽模式，0或者1
                    ,content: $('#update_form').html()         // 引入自定义表单
                    ,btn1: function(index, layero){            // 这个是新增按钮点击事件
                        layer.msg("更新按钮");
                        // let insert_no = $("#insert_no").val();
                        // if(insert_no) {
                        //     // 自定义ajax请求
                        //     // working
                        //     // 关闭弹出框
                        //     layer.close(index);
                        // }
                        // else {
                        //     alert("请填写必要项!");
                        // }
                    }
                    ,success: function(layero){
                        // 初始化弹出表单
                        // for(i = 0; i < data.length; i++) {
                        //     var only= data[i];
                        $("#update_select").append("<option value='1'>下拉数据01</option>");
                        $("#update_select").append("<option value='2'>下拉数据01</option>");
                        // }
                        // 初始化过程中，触发这里的函数代码
                        // 初始化form表单样式，并刷新select渲染
                        layui.use(['form'], function(){
                            layui.form.render('select');
                        });
                        // 初始化日期控件
                        layui.use('laydate', function(){
                            var laydate = layui.laydate;
                            //日期  搜索的开始时间
                            laydate.render({
                                elem: '#update_time',
                            });
                        });
                    }
                });
            }
        });
    });

    // 新增数据弹出表单
    function openLayer(){

    }
</script>
</body>
</html>